package com.lmt.service;

import com.lmt.base.ResultData;
import com.lmt.entity.UserInfo;
import com.lmt.entity.search.UserInfoSearch;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * Date 2018/07/17
 *
 * @author MT-Lin
 */
public interface UserInfoService {

	/**
	 * 添加用户
	 * @param userInfo 添加的用户
	 * @return ResultData
	 * @throws Exception 异常
	 */
	ResultData save(UserInfo userInfo) throws Exception;

	/**
	 * 用户登录
	 * @param userInfo 登陆的用户
	 * @param session session
	 * @return ResultData
	 * @throws Exception 异常
	 */
	ResultData login(UserInfo userInfo, HttpSession session) throws Exception;

	/**
	 * 搜索用户
	 * @param userInfoSearch 搜索条件
	 * @return ResultData
	 */
	ResultData search(UserInfoSearch userInfoSearch);

	/**
	 * 删除用户
	 * @param userInfoList 要删除的用户集合
	 * @return ResultData
	 */
	ResultData delete(List<UserInfo> userInfoList);

	/**
	 * 冻结账户
	 * @param userInfoList 要冻结的账户
	 * @return ResultData
	 */
	ResultData freeze(List<UserInfo> userInfoList);

	/**
	 * 解冻用户
	 * @param userInfoList 要解冻的账户
	 * @return ResultData
	 */
	ResultData unfreeze(List<UserInfo> userInfoList);

	/**
	 * 重置用户密码
	 * @param userInfoList 要重置密码的用户
	 * @return ResultData
	 * @throws Exception 异常
	 */
	ResultData resetPassword(List<UserInfo> userInfoList) throws Exception;

	/**
	 * 根据ID获取用户名
	 * @param id 用户ID
	 * @return 用户名
	 */
	String getUserNameById(String id);

	/**
	 * 获取用户信息
	 * @param tokenId tokenId
	 * @return ResultData
	 */
	ResultData getUserInfo(String tokenId);
}
